Node assert (断言)

断言是什么
assert 模块提供了一组简单的断言测试,可用于测试不变量。
存在严格模式(strict)和遗留模式(legacy),但建议仅使用严格模式。
简单说就是用来做测试的
严格模式的引入: const assert = require('assert').strict;
遗留模式的引入: const assert = require('assert')
API 学习
1. assert.equal(actual, expected[, message])
message 是可选属性,报错抛出message
严格模式:assert.strictEqual
注意: 只能判断基本数据类型,引用类型不可以判断
    assert.equa(1,1) // true 通过
    assert.equa({a:1},{a:1})  // false 未通过
    equal  表示 ==
    strictEqual 表示 ===
    // 所以要注意隐式转换的问题比如说
    assert.equa("1",1) // true 通过
    assert.strictEqual('1',1) // false 报错
2. assert.deepEqual(actual, expected[, message])
严格模式: assert.deepStrictEqual(actual, expected[, message])
解释: 判断期望值和实际值是否相等,可判断可枚举属性
具有equal函数的相同功能,也能判断对象,数组
    assert.deepEqual(["1",2],[1,2]) // 通过
    // 严格模式下
    assert.deepStrictEqual(["1",2],[1,2])  //未通过
    // 循环在比较数组中的每一个元素
    
    主要就是是使用这2个严格模式

Mocha 测试框架

Mocha 是一个在Node.js和浏览器上运行的功能丰富的JavaScript测试框架,使异步测试变得简单而有趣。
Mocha 测试以串行方式运行,允许灵活准确的报告,同时将未捕获的异常映射到正确的测试用例
首先是安装
建议使用项目里面安装mocha,不然全部安装使用会影响别的项目.记得这是开发依赖
npm install --save-dev mocha
然后创建一个test 文件夹,所有的测试文件放在test下
  1. 编写测试
接下来我们可以编写测试案例了,新建一个add.js 代码如下
module.exports = function (a,b) {
    return a+b;
};
下面我们就对这个函数进行测试在test文件夹下面新建一个test.js文件上面我们已经在项目中安装了mocha
const assert = require('assert');
const add = require('../add.js');
describe('#add', () =>{
    it('sum(3,5) should return 8', () => {
         assert.strictEqual(sum(3,5), 8);
    })
})
这时候我们来看一下 deescribe 这个函数 可以任意嵌套多作为一个组,直白点就是给你当注释用的it 函数是一个测试用例 你可以下多个 放在it里面
现在我们要配置测试,我们在package.json里面配置一个test命名 对应 mocha 就可以了.
运行 npm test 那么一个测试就完成了
还有一些生命周期的函数,可以把下面这段代码添加进
describe('#add', () =>{
    before(function () {
            console.log('before:');
        });

        after(function () {
            console.log('after.');
        });

        beforeEach(function () {
            console.log('  beforeEach:');
        });

        afterEach(function () {
            console.log('  afterEach.');
    });
    it('sum(3,5) should return 8', () => {
         assert.strictEqual(sum(3,5), 8);
    })
})
  
  可以看一下这个生命周期,了解一下.
  1. 异步测试
用mocha测试一个函数是非常简单的,但是,在JavaScript的世界中,更多的时候,我们编写的是异步代码,所以,我们需要用mocha测试异步函数。
这里涉及一个新的知识点 async 函数,可能有的小伙伴不太会,这里啰嗦一下,因为我也不太懂
async 函数
    我理解的 async
    
    以前我们使用 callback。

    后来我们使用 Promise。

    现在我们使用 Async/Await。
    
    Async - 定义异步函数(async function someName(){...})
    - 自动把函数转换为 Promise
    - 当调用异步函数时,函数返回值会被 resolve 处理
    - 异步函数内部可以使用 await
    
    Await - 暂停异步函数的执行 (var result = await someAsyncCall();)
    - 当使用在 Promise 前面时,await 等待 Promise 完成,并返回 Promise 的结果
    - await 只能和 Promise 一起使用,不能和 callback 一起使用
    - await 只能用在 async 函数中
    
修改函数如下
 module.exports =  async ()=>{
    let num = await setTimeout(() =>{
        return 1
        console.log(1)
    },1000)
    return num
}
然后编写一个测试函数
const assert = require('assert')
const sum = require('../add')
describe("#add", () =>{
   it("测试异步", async () =>{
       let result = await sum()
       console.log(result)
       console.log(1)
   })
})

运行 npm test  查看结果.
  1. Http测试

    <font color=red>暂时还没写</font>

karma

Karma的主要目标是为开发人员提供高效的测试环境。
环境是他们不必设置大量配置的环境,而是开发人员可以编写代码并从测试中获得即时反馈的地方。
因为获得快速反馈是让您富有成效和创造力的原因。
安装
建议的方法是在项目目录中本地安装Karma(以及项目需要的所有插件)。
# Install Karma:
$ npm install karma --save-dev

# Install plugins that your project needs:
$ npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev
这将安装karma,karma-jasmine,karma-chrome-launcher和jasmine-c到node_modules当前工作目录,
也可以作为保存这devDependencies的package.json,
所以,任何其他开发项目工作会只有这样做npm install才能得到所有这些依赖安装。
# Run Karma:
$ ./node_modules/karma/bin/karma start

官网建议安装一个全局的 方便命令
npm install -g karma-cli
如何集成到项目里面

Travis CI

Travis CI是一种流行的持续集成服务,它与您的Github存储库集成,
可在推送代码时自动运行测试。通过向项目根目录添加一个简单的YAML文件来完成集成 ;
Travis和Github负责其余的工作。每当测试时,Travis结果将出现在您的Github拉取请求中,
您的历史记录将在其控制面板中提供。本文假设您已经拥有Travis帐户。

配置
首先是去 travis官网去注册一下 用GitHub账号
然后回读取你的GitHub项目开源的,里面有个设置 打开就好了.Travis会在代码push时收到GitHub通知,然后自动获取最新代码,进行CI。
但是我们还是需要编写一个.travis.yml文件来告诉Travis一些项目信息
language: node_js

node_js:  

     - 0.4  

     - 0.6
前端的配置


package.json 里面要配置个命令
"scripts": {
    "test": "mocha"
  },
  
  
 Mocha 已经安装过全局了

然后push的时候就自动触发 npm test


MiFan
8 声望0 粉丝